<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <!-- 
        预解析：js执行从上往下同步执行，但是js在解析代码时候会重新编译

        预解析：变量提升和函数提升
     -->
    <script>
      // 变量提升
      //   1、预解析会把带var声明的变量提升到最上面
      //   console.log(a);
      //   var a = 1;
      //   console.log(a);

      /* 
        var a;
        console.log(a);
        a = 1;
        console.log(a);
      */

      //   2、变量不加var，变量声明不会提升
      //   console.log(a);
      //   a = 1;
      //   console.log(a);

      //声明式函数会把函数整个提升
      //   fun();
      //   function fun() {
      //     console.log(123);
      //   }
      //   fun();

      /* 
      var fun =function(){
         console.log(123);
      }
      fun();
      fun();
    */
    </script>
  </body>
</html>
